home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / net / readline-2.0mg.tar.gz / readline-2.0mg.tar / readline-2.0mg / xmalloc.c < prev   
C/C++ Source or Header  |  1994-08-03  |  2KB  |  79 lines

  1. /* xmalloc.c -- safe versions of malloc and realloc */
  2.  
  3. /* Copyright (C) 1991 Free Software Foundation, Inc.
  4.  
  5.    This file is part of GNU Readline, a library for reading lines
  6.    of text with interactive input and history editing.
  7.  
  8.    Readline is free software; you can redistribute it and/or modify it
  9.    under the terms of the GNU General Public License as published by the
  10.    Free Software Foundation; either version 1, or (at your option) any
  11.    later version.
  12.  
  13.    Readline is distributed in the hope that it will be useful, but
  14.    WITHOUT ANY WARRANTY; without even the implied warranty of
  15.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16.    General Public License for more details.
  17.  
  18.    You should have received a copy of the GNU General Public License
  19.    along with Readline; see the file COPYING.  If not, write to the Free
  20.    Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
  21.  
  22. #if defined (ALREADY_HAVE_XMALLOC)
  23. #else
  24. #include <stdio.h>
  25.  
  26. #if defined (HAVE_STDLIB_H)
  27. #  include <stdlib.h>
  28. #else
  29. #  include "ansi_stdlib.h"
  30. #endif /* HAVE_STDLIB_H */
  31.  
  32. static void memory_error_and_abort ();
  33.  
  34. /* **************************************************************** */
  35. /*                                    */
  36. /*           Memory Allocation and Deallocation.            */
  37. /*                                    */
  38. /* **************************************************************** */
  39.  
  40. /* Return a pointer to free()able block of memory large enough
  41.    to hold BYTES number of bytes.  If the memory cannot be allocated,
  42.    print an error message and abort. */
  43. char *
  44. xmalloc (bytes)
  45.      int bytes;
  46. {
  47.   char *temp = (char *)malloc (bytes);
  48.  
  49.   if (!temp)
  50.     memory_error_and_abort ("xmalloc");
  51.   return (temp);
  52. }
  53.  
  54. char *
  55. xrealloc (pointer, bytes)
  56.      char *pointer;
  57.      int bytes;
  58. {
  59.   char *temp;
  60.  
  61.   if (!pointer)
  62.     temp = (char *)malloc (bytes);
  63.   else
  64.     temp = (char *)realloc (pointer, bytes);
  65.  
  66.   if (!temp)
  67.     memory_error_and_abort ("xrealloc");
  68.   return (temp);
  69. }
  70.  
  71. static void
  72. memory_error_and_abort (fname)
  73.      char *fname;
  74. {
  75.   fprintf (stderr, "%s: Out of virtual memory!\n", fname);
  76.   abort ();
  77. }
  78. #endif /* !ALREADY_HAVE_XMALLOC */
  79.